357748f5be93b3d624c856453d3b47c50fd90f60,platform/lang-impl/src/com/intellij/codeInsight/folding/impl/DocumentFoldingInfo.java,DocumentFoldingInfo,setToEditor,#Editor#,97

Before Change


    if (psiFile == null) return;

    Map<PsiElement, FoldingDescriptor> ranges = null;
    for(int i = 0; i < myPsiElementsOrRangeMarkers.size(); i++){
      Object o = myPsiElementsOrRangeMarkers.get(i);
      if (o instanceof PsiElement) {
        PsiElement element = (PsiElement)o;
        if (!element.isValid()) continue;

        if (ranges == null) ranges = buildRanges(editor, psiFile);
        FoldingDescriptor descriptor = ranges.get(element);
        if (descriptor == null) continue;

        TextRange range = descriptor.getRange();
        FoldRegion region = FoldingUtil.findFoldRegion(editor, range.getStartOffset(), range.getEndOffset());
        if (region != null) {
          boolean state = myExpandedStates.get(i).booleanValue();
          region.setExpanded(state);
        }
      }
      else if (o instanceof RangeMarker) {
        RangeMarker marker = (RangeMarker)o;
        if (!marker.isValid()) continue;
        FoldRegion region = FoldingUtil.findFoldRegion(editor, marker.getStartOffset(), marker.getEndOffset());
        if (region == null) {
          String placeHolderText = myPlaceholderTexts.get(marker);
          region = editor.getFoldingModel().addFoldRegion(marker.getStartOffset(), marker.getEndOffset(), placeHolderText);

After Change


        region.setExpanded(state);
      }
    }
    for (RangeMarker marker : myRangeMarkers) {
      if (!marker.isValid()) {
        continue;
      }
      FoldRegion region = FoldingUtil.findFoldRegion(editor, marker.getStartOffset(), marker.getEndOffset());
      if (region == null) {
        FoldingInfo info = marker.getUserData(FOLDING_INFO_KEY);
        region = editor.getFoldingModel().addFoldRegion(marker.getStartOffset(), marker.getEndOffset(), info.placeHolder);
        if (region == null) {
          return;
        }
      }

      FoldingInfo fi = region.getUserData(FOLDING_INFO_KEY);
      boolean state = fi != null && fi.expanded;
      region.setExpanded(state);
    }
  }